﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using Volo.Abp.Domain.Repositories;
using mozhi.smarterp.BasicData.Enums;

namespace mozhi.smarterp.BasicData.Products.Repositories
{
    public interface IProductRepository : IRepository<Product , Guid>
    {
        Task<int> GetCountAsync(string code, string name, Guid? excludeId, CancellationToken cancellationToken = default(CancellationToken));

        Task<List<Product>> GetPagedListAsync(string keyword ,  bool? activated , List<ProductType> types , bool? saleable , bool? purchasable , bool? producible , bool? outsourceable,bool? assetable,
            int skipCount, int maxResultCount, string sorting, bool includeDetails = false, CancellationToken cancellationToken = default(CancellationToken));

        Task<int> GetCountAsync(string keyword, bool? activated, List<ProductType> types ,
            bool? saleable, bool? purchasable, bool? producible, bool? outsourceable, bool? assetable, CancellationToken cancellationToken = default(CancellationToken));
    }
}
